package com.techwells.taco.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class VerifyUtils {

	public static final String CORRECT = "";
	public static final String NULL = "Parameter is null";
	private static final String PHONE_NOT_RIGHT = "手机号不太对哦";
	private static final String PWD_NOT_RIGHT = "密码需要6-20位长哟";
	private static final String NAME_NOT_RIGHT = "您输入的名字太长啦";
	private static final String EMAIL_NOT_RIGHT = "您输入的邮箱不对哦";
	public static final String VLP_NOT_RIGHT = "请填写正确的车牌号";
	public static final String CODE_NOT_RIGHT = "哎呀，验证码好像不正确";
	/**
	 * 验证手机号码是否正确，若不正确返回错误提示,若正确则返回 CORRECT 验证规则：手机号长度不足或未以13,14,15,17,18开头
	 */
	public static String checkMobileNO(String mobileNo) {
		if (null == mobileNo || "".equals(mobileNo)) {
			return NULL;
		}
		boolean flag = false;
		String info;
		try {
			Pattern p = Pattern
					.compile("^((13[0-9])|(14[5,6,7])|(15[[0-3],[5-9]])|(17[0-9])|(18[0-9]))\\d{8}$");
			Matcher m = p.matcher(mobileNo);
			flag = m.matches();
		} catch (Exception e) {
			flag = false;
		}

		if (flag) {
			info = CORRECT;
		} else {
			info = PHONE_NOT_RIGHT;
		}

		return info;
	}

	/**
	 * 验证密码是否正确，若不正确返回错误提示,若正确则返回 CORRECT 验证规则：密码输入长度小于6位或大于20位
	 */
	public static String checkPwd(String pwd) {
		if (null == pwd || "".equals(pwd)) {
			return NULL;
		}
		boolean flag = false;
		String info;
		int len = pwd.length();
		if (len < 6 || len > 20) {
			flag = false;
		} else {
			flag = true;
		}

		if (flag) {
			info = CORRECT;
		} else {
			info = PWD_NOT_RIGHT;
		}

		return info;
	}

	/**
	 * 验证账号是否正确，若不正确返回错误提示,若正确则返回 CORRECT 验证规则：账号输入长度为0
	 */
	public static String checkAccount(String account) {
		String info;
		if (null == account || "".equals(account)) {
			return NULL;
		} else {
			info = CORRECT;
		}
		return info;
	}

	/**
	 * 验证姓名是否正确，若不正确返回错误提示,若正确则返回 CORRECT 验证规则：姓名输入长度超过20字节
	 */
	public static String checkName(String name) {
		if (null == name || "".equals(name)) {
			return NULL;
		}
		boolean flag = false;
		String info;
		int len = name.length();
		if (len > 20) {
			flag = false;
		} else {
			flag = true;
		}

		if (flag) {
			info = CORRECT;
		} else {
			info = NAME_NOT_RIGHT;
		}
		return info;
	}

	/**
	 * 验证姓名是否正确，若不正确返回错误提示,若正确则返回 CORRECT 验证规则：姓名输入长度超过20字节
	 */
	public static String checkEmail(String email) {
		if (null == email || "".equals(email)) {
			return NULL;
		}
		boolean flag = false;
		String info;
		try {
			Pattern p = Pattern
					.compile("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\\.[a-zA-Z0-9_-]{2,3}){1,2})$");
			Matcher m = p.matcher(email);
			flag = m.matches();
		} catch (Exception e) {
			flag = false;
		}

		if (flag) {
			info = CORRECT;
		} else {
			info = EMAIL_NOT_RIGHT;
		}
		return info;
	}

	/**
	 * 验证车牌号是否正确，若不正确返回错误提示,若正确则返回 CORRECT 验证规则：11.
	 * 车牌号验证规则（文案：车牌号与优惠有关要填正确哦，例：沪A12345）： 1) 以汉字开头并且只有一个，这个汉字是车辆所在省的简称 2)
	 * 汉字后为字母，代表该车所在地的地市一级代码，英文字母大小写都可以。 3) 后面五个是字母和数字的组合。英文字母大小写都可以。 4)
	 * 最后一位可以是汉字，例如：沪B-2382学
	 */
	public static String checkVLP(String vlp) {
		if (null == vlp || "".equals(vlp)) {
			return NULL;
		}
		boolean flag = false;
		String info;
		try {
			Pattern p = Pattern
					.compile("^[\u4e00-\u9fa5]{1}[A-Z_a-z]{1}[A-Z_0-9_a-z]{4}[A-Z_0-9_a-z_学]{1}$");
			Matcher m = p.matcher(vlp);
			flag = m.matches();
		} catch (Exception e) {
			flag = false;
		}

		if (flag) {
			info = CORRECT;
		} else {
			info = VLP_NOT_RIGHT;
		}
		return info;
	}
	
	/**
	 * 验证验证码是否正确，若不正确返回错误提示,若正确则返回 CORRECT 输入长度为6个数字
	 */
	public static String checkCode(String code) {
		if (null == code || "".equals(code)) {
			return NULL;
		}
		int len = code.length();
		if (len ==  6) {
			return CORRECT;
		} else {
			return CODE_NOT_RIGHT;
		}
	}

}
